Cálculo de Venda - Resposta

Versão 01

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner teclado = new Scanner(System.in);

        float valorCompra;
        int codigo;
   
        valorCompra = lerValorFloat(teclado, "Digite o valor da compra: ");

        exibirMenuPagamento();

        codigo = lerValorInteiro(teclado,"Digite a opção de pagamento: ");

        System.out.println();

        switch (codigo) {
            case 1: calcPagVista(valorCompra); break;
            case 2: calcPagCreditoDesconto(valorCompra); break;
            case 3: calcPag2xSemJuros(valorCompra); break;
            case 4: calcPag4xComJuros(valorCompra); break;
            default: System.out.println("Código inválido."); break;
        }

        teclado.close();
    }

    static void calcPagVista(Float valor){
        // À vista, 8% de desconto
        float valorFinal = valor * ((100 - 8) / 100f);
        System.out.println("À vista, com 8% de desconto.");
        System.out.printf("Valor final: R$ %.2f%n", valorFinal);
    }

    static void calcPagCreditoDesconto(float valorCompra){
        // À vista no cartão, 4% de desconto
        float valorFinal = valorCompra * ((100 - 4) / 100f);
        System.out.println("À vista no cartão, com 4% de desconto.");
        System.out.printf("Valor final: R$ %.2f%n", valorFinal);
    }

    static void calcPag2xSemJuros(float valorCompra){
        // Em 2x, sem juros
        float valorFinal = valorCompra;
        System.out.println("Em 2x, preço normal sem juros.");
        System.out.printf("Cada parcela: R$ %.2f%n", valorFinal / 2);
    }

    static void calcPag4xComJuros(float valorCompra){
        //  Em 4x, com acréscimo de 8%
        float valorFinal = valorCompra * ((100 + 8) / 100f);
        System.out.println("Em 4x, preço acrescido de 8%.");
        System.out.printf("Cada parcela: R$ %.2f%n", valorFinal / 4);
    }


    static void exibirMenuPagamento(){
        System.out.println("\n====================================");
        System.out.println("        FORMAS DE PAGAMENTO");
        System.out.println("====================================");
        System.out.println("1 - À vista, com 8% de desconto");
        System.out.println("2 - À vista no cartão, com 4% de desconto");
        System.out.println("3 - Em 2x, preço normal sem juros");
        System.out.println("4 - Em 4x, preço acrescido de 8%\n");
    }

    static int lerValorInteiro(Scanner teclado, String mensagem){
        int valor = 0;

        try {
            System.out.print(mensagem);
            valor = teclado.nextInt();
        } catch (Exception e) {
            System.out.println("Valor digitado é incorreto.");
        }

        return valor;
    }

    static float lerValorFloat(Scanner teclado, String mensagem){
        float valor = 0;

        try {
            System.out.print(mensagem);
            valor = teclado.nextFloat();
        } catch (Exception e) {
            System.out.println("Valor digitado é incorreto.");
        }

        return valor;
    }


    static double lerValorDouble(Scanner teclado, String mensagem){
        double valor = 0;

        try {
            System.out.print(mensagem);
            valor = teclado.nextDouble();
        } catch (Exception e) {
            System.out.println("Valor digitado é incorreto.");
        }

        return valor;
    }
}

Versão 02: Nesta versão, o processamento das opções de venda foi movido para um procedimento.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner teclado = new Scanner(System.in);

        float valorCompra;
        int codigo;
   
        valorCompra = lerValorFloat(teclado, "Digite o valor da compra: ");

        exibirMenuPagamento();

        codigo = lerValorInteiro(teclado,"Digite a opção de pagamento: ");

        System.out.println();

        processarPagamento(codigo, valorCompra);

        teclado.close();
    }

    static void calcPagVista(Float valor){
        // À vista, 8% de desconto
        float valorFinal = valor * ((100 - 8) / 100f);
        System.out.println("À vista, com 8% de desconto.");
        System.out.printf("Valor final: R$ %.2f%n", valorFinal);
    }

    static void calcPagCreditoDesconto(float valorCompra){
        // À vista no cartão, 4% de desconto
        float valorFinal = valorCompra * ((100 - 4) / 100f);
        System.out.println("À vista no cartão, com 4% de desconto.");
        System.out.printf("Valor final: R$ %.2f%n", valorFinal);
    }

    static void calcPag2xSemJuros(float valorCompra){
        // Em 2x, sem juros
        float valorFinal = valorCompra;
        System.out.println("Em 2x, preço normal sem juros.");
        System.out.printf("Cada parcela: R$ %.2f%n", valorFinal / 2);
    }

    static void calcPag4xComJuros(float valorCompra){
        //  Em 4x, com acréscimo de 8%
        float valorFinal = valorCompra * ((100 + 8) / 100f);
        System.out.println("Em 4x, preço acrescido de 8%.");
        System.out.printf("Cada parcela: R$ %.2f%n", valorFinal / 4);
    }

    static void exibirMenuPagamento(){
        System.out.println("\n====================================");
        System.out.println("        FORMAS DE PAGAMENTO");
        System.out.println("====================================");
        System.out.println("1 - À vista, com 8% de desconto");
        System.out.println("2 - À vista no cartão, com 4% de desconto");
        System.out.println("3 - Em 2x, preço normal sem juros");
        System.out.println("4 - Em 4x, preço acrescido de 8%\n");
    }

    static int lerValorInteiro(Scanner teclado, String mensagem){
        int valor = 0;

        try {
            System.out.print(mensagem);
            valor = teclado.nextInt();
        } catch (Exception e) {
            System.out.println("Valor digitado é incorreto.");
        }

        return valor;
    }

    static float lerValorFloat(Scanner teclado, String mensagem){
        float valor = 0;

        try {
            System.out.print(mensagem);
            valor = teclado.nextFloat();
        } catch (Exception e) {
            System.out.println("Valor digitado é incorreto.");
        }

        return valor;
    }

    static double lerValorDouble(Scanner teclado, String mensagem){
        double valor = 0;

        try {
            System.out.print(mensagem);
            valor = teclado.nextDouble();
        } catch (Exception e) {
            System.out.println("Valor digitado é incorreto.");
        }

        return valor;
    }

    static void processarPagamento(int codigo, float valorCompra){
           switch (codigo) {
            case 1: calcPagVista(valorCompra); break;
            case 2: calcPagCreditoDesconto(valorCompra); break;
            case 3: calcPag2xSemJuros(valorCompra); break;
            case 4: calcPag4xComJuros(valorCompra); break;
            default: System.out.println("Código inválido."); break;
        }
    }
}

sdf